package be.ipl.finito.daoimpl;

import java.util.List;

import javax.ejb.EJB;
import javax.ejb.Stateless;

import be.ipl.finito.dao.JetonDao;
import be.ipl.finito.dao.PartieDao;
import be.ipl.finito.domaine.Joueur;
import be.ipl.finito.domaine.Partie;
import be.ipl.finito.exceptions.ArgumentInvalideException;

@SuppressWarnings("serial")
@Stateless
public class PartieDaoImpl extends DaoImpl<Integer, Partie> implements PartieDao{
	
	@EJB private JetonDao jetonDao;
	
	@Override
	public Partie creerPartie(String nom) throws IllegalArgumentException {
		Partie partie = new Partie(nom);
		for (int i = 0; i < partie.getListeJeton().size(); i++) {
			jetonDao.enregistrer(partie.getListeJeton().get(i));
		}
		
		return this.enregistrer(partie);
	}

	@Override
	public List<Partie> listerPartiesEnAttente() {
		String query = "select p from Partie p where p.etat = ?1";
		return this.liste(query, Partie.Etat.EN_ATTENTE);
	}

	@Override
	public Partie chercherPartie(String nom) {

		String query = "SELECT p FROM Partie p WHERE p.nom = ?1";

		return this.recherche(query, nom);
	}

	@Override
	public Partie chercherPartie(int id) {

		String query = "SELECT p FROM Partie p WHERE p.id = ?1";

		return this.recherche(query, id);
	}


	@Override
	public Partie chargerPlateaux(Partie partie) {
		partie = recharger(partie.getId());
		partie.getPlateaux().size();
		return partie;
	}

	@Override
	public Partie chargerJetons(Partie partie) {
		partie = recharger(partie.getId());
		partie.getPioches().size();
		return partie;
	}
	
	

}
